热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

控制策略|PI控制器积分分离的仿真分析

目录1.概述2.积分分离PI控制器3.直流电机模型4.仿真结果分析4.1普通的PI控制4.2积分分离的PI控制1.概述PID控制器是工程上应用最广泛的控制方法࿰

目录

 

1. 概述

2. 积分分离PI控制器

3. 直流电机模型

4. 仿真结果分析

4.1 普通的PI控制

4.2 积分分离的PI控制




1. 概述

        PID控制器是工程上应用最广泛的控制方法,汽车上的应用也非常多,比如:定速巡航、蠕行控制、车速限制、电机转速控制等。今天,我们介绍一种比较常用的PI控制方法:积分分离的PI控制器。

        通常PID控制中引入积分是为了消除静态误差、提高控制精度,但在过程的启动、结束或大幅度增减设定值时,短时间内系统输出很大的偏差会造成PID运算的积分积累,致使控制量超过执行机构可能允许的最大动作范围所对应的极限控制量,引起系统较大的超调,甚至引起系统较大的振荡。

        再通俗一点理解就是,积分控制代表过去,当偏差较大时会积累太多非期望的过去,这会对后面的动态过程控制产生不利影响,所以可以想办法把这部分不想要的积分屏蔽掉,以减小超调量。


2. 积分分离PI控制器

        下图为普通PI控制器的Simulink模型:


图 2‑1:普通PI控制器

        我们在普通PI控制器的基础上增加积分分离算法:当目标转速与实际转速偏差大于一定值时停止积分;当目标转速与实际转速偏差小于一定值时开始积分。积分分离PI控制器如下图所示:


图 2‑2:积分分离的PI控制

        其中,开始积分的偏差阈值在此处设定为800rpm,Kp设定为0.005,Ki设定为0.02。


3. 直流电机模型

        为了直观看到PI控制器运行的效果,还需要设置一个被控对象模型,这里选择了一个12V直流电机作为被控对象,其数学表达式为:

U=I*R+Ke*φ*w+L*dI/dt

Te=Kt*φ*I

Te-TL=J*dw/dt+B*w

        基于上述表达式,采用传递函数模块搭建直流电机的Simulink模型,如下图所示:


图 3‑1:直流电机模型

        其中,电机模型参数:L设置为0.05,R设置为0.1,J设置为0.001,B设置为0.01,Ke设置为0.1,fai设置为0.1,Kt设置为Ke*30/pi,TL设置为0。


4. 仿真结果分析

        将PI控制器和直流电机模型组合起来,一个通过PI控制器控制直流电机转速的仿真模型就完成了,如下图所示:


图 4‑1:仿真模型

        其中,上半部分是普通的PI控制,下半部分是积分分离的PI控制,通过仿真可以分析出两种PI控制器的不同之处。仿真过程中,通过Signal Builder模块给定一个目标转速。


4.1 普通的PI控制

        普通的PI控制仿真结果如下图所示:


图 4‑2:普通PI仿真结果

         从图中可以看出,转速控制的结果还是比较理想,出现短暂的超调后能够迅速回到稳定状态。


4.2 积分分离的PI控制

        积分分离的PI控制仿真结果如下图所示: 


图 4‑3:积分分离PI仿真结果

        从图中可以看出,相比普通的PI控制器,虽然响应的速率差不多,但是超调量有了很大改善。

        通常,对于积分分离PI控制器,由于I项仅仅作用于小偏差范围,因此可以适当增大参数值,以提高响应速率。


推荐阅读
  • 算法稳定币:构建去中心化加密货币体系的新希望
    本文探讨了算法稳定币在加密经济中的潜力,分析其与传统稳定币及比特币等早期加密资产的区别,并展望其未来发展方向。随着DeFi的兴起,算法稳定币正逐渐成为实现中本聪最初愿景的关键角色。 ... [详细]
  • 精选多款高效实用软件及工具推荐
    本文介绍并推荐多款高效实用的软件和工具,涵盖系统优化、网络加速、多媒体处理等多个领域,并提供安全可靠的下载途径。 ... [详细]
  • docker镜像重启_docker怎么启动镜像dock ... [详细]
  • Vue 开发与调试工具指南
    本文介绍了如何使用 Vue 调试工具,包括克隆仓库、安装依赖包、构建项目以及在 Chrome 浏览器中加载扩展的详细步骤。 ... [详细]
  • 本文通过实例详细介绍了如何在C++ Builder(BCB)中派生一个TMemo类,并动态创建该VCL控件。我们将展示如何定义派生类TMemoEx,以及如何在窗体中动态创建和使用这个控件。 ... [详细]
  • 本文深入探讨了 Delphi 中类对象成员的核心概念,包括 System 单元的基础知识、TObject 类的定义及其方法、TClass 的作用以及对象的消息处理机制。文章不仅解释了这些概念的基本原理,还提供了丰富的补充和专业解答,帮助读者全面理解 Delphi 的面向对象编程。 ... [详细]
  • cJinja:C++编写的轻量级HTML模板引擎
    本文介绍了cJinja,这是一个用C++编写的轻量级HTML模板解析库。它利用ejson来处理模板中的数据替换(即上下文),其语法与Django Jinja非常相似,功能强大且易于学习。 ... [详细]
  • 在许多地理位置选择类的应用程序中,侧边栏是常见的用户界面元素,用于通过选择特定的字母快速定位和选择地点。本文将详细介绍如何在Android应用中创建一个具有波浪效果的自定义侧边栏,以提升用户体验。 ... [详细]
  • 探讨在使用 Fast-Android-Networking 库时遇到的 addStringBody 方法无法正常工作的问题及其解决方案。 ... [详细]
  • Android Studio 中 Gradle 使用的常见问题与解决方案
    本文探讨了在使用 Android Studio 进行开发时,遇到的与 Gradle 相关的问题,包括每次打开项目都需要下载 Gradle 和 Gradle 插件依赖包下载失败或卡顿等问题,并提供了详细的解决方法。 ... [详细]
  • 本文详细介绍了如何在Python3环境中配置Appium1.4.6,并指导如何连接模拟器进行自动化测试。通过本文,您将了解从环境搭建到模拟器连接的完整流程。 ... [详细]
  • 本文探讨了在多种编程语言中实现Hello World输出的方法,从经典的C语言到现代的JavaScript,每种语言都有其独特的表达方式。 ... [详细]
  • Asp.net MVC 中 Bundle 配置详解:合并与压缩 JS 和 CSS 文件
    本文深入探讨了 Asp.net MVC 中如何利用 Bundle 功能来合并和压缩 JavaScript 和 CSS 文件,提供了详细的配置步骤和示例代码,适合开发人员参考学习。 ... [详细]
  • 在使用高德地图内置导航功能时遇到AMapNavi组件出现空指针异常,经过多次排查发现问题是由于so库的兼容性引起的。本文将详细介绍如何通过调整项目配置来解决这一问题。 ... [详细]
  • 本文介绍了如何在 Flutter 应用程序中使用单例模式创建一个全局唯一的数据管理类,以确保在整个应用生命周期中数据的一致性和可访问性。 ... [详细]
author-avatar
夕阳何处寻
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有